package com.yc.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.yc.model.Userinfo;
import com.yc.service.UserService;

@Controller
public class UserAdminController {
	@Autowired
	UserService service;
	public UserService getService() {
		return service;
	}
	public void setService(UserService service) {
		this.service = service;
	}

	@RequestMapping("/getuserbypage")
	public void getUserByPage(HttpServletRequest request,
			HttpServletResponse response) {
		// 设置返回的MIME类型为xml
		response.setContentType("text/xml");
		// 获取希望显示的页码数
		int page = Integer.parseInt(request.getParameter("page"));

		// 获取最大页码数
		int maxPage = service.getMaxPage(10);
		// 对当前的页码数进行纠错，如果小于1，则直接显示第一页的内容
		page = page < 1 ? 1 : page;
		// 对当前的页码数进行纠错，如果大于最大页码，则直接显示最后一页的内容
		page = page > maxPage ? maxPage : page;
		List<Userinfo> list = service.findByAllUserService();
		// 尝试将结果结构化为xml文档
		try {
			// 创建XML DOM树
			Document doc = DocumentBuilderFactory.newInstance()
					.newDocumentBuilder().newDocument();
			// 创建XML根节点
			Element root = doc.createElement("users");
			// 将根节点加入DOM树
			doc.appendChild(root);
			// 循环遍历结果集合中的用户信息
			for (Userinfo info : list) {
				// 每一个用户创建一个用户标签
				Element user = doc.createElement("user");
				// 创建用户ID标签
				Element userId = doc.createElement("userId");
				// 设置用户ID标签文本内容
				userId.setTextContent(info.getUserId() + "");
				// 将用户ID标签设置为用户标签子标签
				user.appendChild(userId);
				// 创建用户名标签
				Element userAccount = doc.createElement("userAccount");
				// 设置用户名标签文本内容
				userAccount.setTextContent(info.getUserAccount());
				// 将用户名标签设置为用户标签子标签
				user.appendChild(userAccount);
				// 创建角色id标签
				Element role = doc.createElement("role");
				// 设置角色id标签文本内容
				role.setTextContent(info.getRole() + "");
				// 将角色id标签设置为用户标签子标签
				user.appendChild(role);
				// 创建角色名标签
				Element roleName = doc.createElement("rolename");
				// 设置角色名标签文本内容
				roleName.setTextContent(info.getRoleinfo().getRolename());
				// 将角色名标签设置为用户标签子标签
				user.appendChild(roleName);
				// 创建角色锁定信息标签
				Element locked = doc.createElement("locked");
				// 设置角色锁定信息标签文本内容
				locked.setTextContent(info.getLocked() + "");
				// 将角色锁定信息标签设置为用户标签子标签
				user.appendChild(locked);
				// 创建角色头像标签
				Element faceimg = doc.createElement("faceimg");
				// 设置角色头像标签文本内容
				faceimg.setTextContent(info.getFaceimg() + "");
				// 设置头像标签为用户标签子标签
				user.appendChild(faceimg);
				// 设置用户标签为根标签子标签
				root.appendChild(user);
			}
			// 创建当前页码数的标签
			Element pageNow = doc.createElement("page");
			// 设置当前页码数标签的文本内容
			pageNow.setTextContent(page + "");
			// 将当前页码数标签设置为根标签的子标签
			root.appendChild(pageNow);
			// 创建最大页码数的标签
			Element maxPageElement = doc.createElement("maxPage");
			// 设置最大页码数标签的文本内容
			maxPageElement.setTextContent(maxPage + "");
			// 将最大页码数标签设置为根标签的子标签
			root.appendChild(maxPageElement);
			// 将完整的DOM树转换为XML文档结构字符串输出到客户端
			TransformerFactory
					.newInstance()
					.newTransformer()
					.transform(new DOMSource(doc),
							new StreamResult(response.getOutputStream()));
			// 捕获查询、转换过程中的异常信息
		} catch (Exception ex) {
			// 输出异常信息
			ex.printStackTrace();
		}

	}
	//用户信息修改
	
	@RequestMapping("/adminmodifyuser.order")
	public String toModifyDishes(HttpServletRequest request,
			HttpServletResponse resp, String userPass,Integer role) throws IOException {
		Userinfo us = (Userinfo) request.getSession().getAttribute("MODIFY_INFO");
			Userinfo user = new Userinfo();
			user.setUserId(us.getUserId());
			user.setUserPass(userPass);
			user.setRole(role);
			service.ModifyUserById(user);
			resp.setContentType("text/html");
			PrintWriter out = resp.getWriter();
			out.println(" <script type='text/javascript'> alert('用户修改成功，确定返回用户页面')</script>");
			out.println("</HTML>");
			out.flush();

		return "pages/main/admin/useradmin";
	}
	
	@RequestMapping("/getonlinewaiters")
	public void getOnlineWaiters(HttpServletRequest request,
			HttpServletResponse response) {
		// 设置返回的MIME类型为xml
		response.setContentType("text/xml");
		// 从监听器中获取在线的服务员列表
       List<Userinfo> waiters = service.selectByOnlineChef();
		// 获取所有的会话数目
		///int sessions = OrderSysListener.onlineSessions;
		// 尝试将在线服务员列表结构化为xml文档
		try {
			// 创建XML DOM树
			Document doc = DocumentBuilderFactory.newInstance()
					.newDocumentBuilder().newDocument();
			// 创建XML根节点
			Element root = doc.createElement("users");
			// 将根节点加入DOM树
			doc.appendChild(root);
			// 循环遍历结果集合中的管理员信息
			for (Userinfo info : waiters) {
				System.out.println(info);
				Element user = doc.createElement("user");
				Element userId = doc.createElement("userId");
				userId.setTextContent(info.getUserId() + "");
				user.appendChild(userId);
				Element userAccount = doc.createElement("userAccount");
				userAccount.setTextContent(info.getUserAccount());
				user.appendChild(userAccount);
				Element role = doc.createElement("role");
				role.setTextContent(info.getRole() + "");
				user.appendChild(role);
				Element roleName = doc.createElement("roleName");
				roleName.setTextContent(info.getRoleinfo().getRolename());
				user.appendChild(roleName);
				System.out.println(userAccount+":"+role+":"+roleName+":"+userId);
				root.appendChild(user);
				System.out.println("==========================================");
				System.out.println(user);
			}
			TransformerFactory
					.newInstance()
					.newTransformer()
					.transform(new DOMSource(doc),
							new StreamResult(response.getOutputStream()));
		} catch (Exception ex) {
			// 输出异常信息
			ex.printStackTrace();
		}

	}
}



















